使用 Babel打包
配置
npm install --save-dev @babel/core @babel/cli @babel/preset-env
npm install --save @babel/polyfill
# 下面两个如果使用了 实验特性才要装
npm install --save @babel/plugin-proposal-class-properties
npm install --save @babel/plugin-proposal-private-methods
配置文件(babel.config.json)
{
"presets": [
[
"@babel/env",
{
"targets": {
"edge": "17",
"firefox": "60",
"chrome": "67",
"safari": "11.1"
},
"useBuiltIns": "usage",
"corejs": "3.6.5"
}
]
],
"plugins": [
"@babel/plugin-proposal-class-properties",
"@babel/plugin-proposal-private-methods"
]
}
打包
./node_modules/.bin/babel src --out-dir lib
babel 的模块
webpack,Babel,babel-loader的关系
模块 | 作用 |
---|---|
@babel/cli | Babel附带了一个内置的CLI,可用于从命令行编译文件。 |
@babel/core | 使用本地配置文件 |
@babel/preset-env | 编译最新版本JavaScript |
@babel/preset-react | 编译react |
@babel/polyfill | 通过 Polyfill 方式在目标环境中添加缺失的特性 |
@babel/plugin-proposal-class-properties | 编译 class |
为什么不能单独用 babel
参考资料 关于webpack,babel,以及es6和commonJS之间的联系
babel 是将es6转换成es5,转换后的代码遵循 COMMONJS 规范,而这个规范,浏览器是不能识别的,直接运行会报错(例如 import这个关键词)
所以 为了将 babel 生成的 commonJS 规范的 es5 写法能够在浏览器上直接运行,就借住了 webpack 这个打包工具来完成,因为 webpack 本身也是遵循 commonJS 这个规范的
//module.exports是commonJS的接口输出规范,es6的规范是export
module.exports = {
entry: path.join(__dirname, 'index.js'),
output: {
path: path.join(__dirname, 'outs'),
filename: 'index.js'
},
};